package top.infopub.mgr.flow.dao;


import org.apache.ibatis.annotations.Param;
import top.infopub.generic.GenericDao;
import top.infopub.model.flow.TemplateNode;

import java.util.List;
import java.util.Map;


/** 工作流模板节点(FLOW_TEMPLATE_NODE) **/
public interface TemplateNodeDao extends GenericDao<TemplateNode, String> {

    /** codegen **/
    
    /**
     * 查询当前模板剩余的【审批+知会】节点信息  node_idx>nowIdx
     * @param map  含key: templateId  nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestAllNodes(Map<String, Object> map);
    
    /**
     * 查询当前模板剩余的【审批】节点信息  node_idx>nowIdx
     * @param map  含key: templateId  nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestNodes(Map<String, Object> map);
    
    /**
     * 查询当前模板剩余的【知会】节点信息  node_idx>nowIdx
     * @param map  含key: templateId  nowIdx
     * @return 
     * @see
     */
    List<TemplateNode> queryRestNotifyNodes(Map<String, Object> map);
    
    /**
     * 查询当前模板 小于 边界最大值 的【知会】节点信息
     * @param map  含key: templateId  idxMax
     * @return 
     * @see
     */
    List<TemplateNode> queryIdxsNotifyNodes(Map<String, Object> map);

    /**
     * 批量插入工作流节点
     * @param templateNodes 
     * @see
     */
    void insertByBatch(@Param("list") List<TemplateNode> templateNodes);

    /**
     * 根据模板id查询工作流节点
     * @param templateId 
     * @see
     */
    void deleteByTemplateId(String templateId);

    TemplateNode queryNextIdxsNodes(@Param("templateId") String templateId, @Param("nodeIdx") Integer nodeIdx);

    List<TemplateNode> queryAllByTemplateId(@Param("templateId") String templateId);
}